package cn.itcast.web.controller.system;

import cn.itcast.domain.system.Dept;
import cn.itcast.service.system.DeptService;
import cn.itcast.web.controller.BaseController;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

@Controller
@RequestMapping("/system/dept")
public class DeptController extends BaseController {

	@Autowired
	private DeptService deptService;

	/**
	 * 分页查询：根据当前登录用户的所属企业id查询
	 * 参数：
	 *  1.page
	 *  2.size
	 * 业务：
	 *  调用service（page，size，企业id）
	 */
	@RequestMapping("/list")
	public String list(@RequestParam(defaultValue = "1") int page, @RequestParam(defaultValue = "5")int size) {
		//获取企业id
		String companyId = getLoginCompanyId();
		//2调用service分页查询（PageInfo）；
		PageInfo info = deptService.findAll(page,size,companyId);
		request.setAttribute("page",info);
		return "system/dept/dept-list";
	}

	/**
	 * 进入新增页面
	 *   1、调用service查询所有部门
	 *   2、页面跳转
	 * 页面构造下拉框
	 *  <select>
	 *      <c:forEach items=${deptList} var="dept">
	 *          <option value=${dept.xxx}>${dept.name}</option>
	 *      </c:forEach>
	 *  </select>
	 */
	@RequestMapping("/toAdd")
	public String toAdd() {
		//为了构造所有部门的下拉框，调用service查询所有部门
		List list = deptService.findAll(getLoginCompanyId());//
		request.setAttribute("deptList",list);
		return  "system/dept/dept-add";
	}

	/**
	 * 进入修改页面/system/dept/toUpdate.do?id=100
	 *   参数：id
	 *   业务：
	 *      1.根据id查询部门，页面回显
	 *      2.构造下拉框数据，查询所有部门
	 */
	@RequestMapping("/toUpdate")
	public String toUpdate(String id) {
		//为了构造所有部门的下拉框，调用service查询所有部门
		//1.根据id查询部门，页面回显
		Dept dept = deptService.findById(id);
		request.setAttribute("dept",dept);
		//2.构造下拉框数据，查询所有部门
		List list = deptService.findAll(getLoginCompanyId());
		request.setAttribute("deptList",list);
		return  "system/dept/dept-update";
	}

	/**
	 * 保存或者修改
	 *    参数：部门对象dept
	 *    业务陷阱：在执行之前，设置部门所属的企业id和企业名称
	 *    业务：
	 *      判断是否有id
	 *      不存在id：保存部门
	 *      存在id：更新部门
	 */
	@RequestMapping("/edit")
	public String edit(Dept dept) {
		//1.设置企业属性
		dept.setCompanyId(getLoginCompanyId());
		dept.setCompanyName(getLoginCompanyName());
		//2.判断是否具有id
		if (StringUtils.isEmpty(dept.getId())) {
			//3.没有id，调用service保存
			deptService.save(dept);
		}else {
			//4.存在id，调用service更新
			deptService.update(dept);
		}
		//5.重定向到列表
		return  "redirect:/system/dept/list.do";
	}

	/**
	 * 删除
	 *  /system/dept/delete.do?id=0ff3f3d2-03f4-49c1-af92-9404e358b49c
	 */
	@RequestMapping("/delete")
	public String delete(String id) {
		deptService.delete(id);
		return  "redirect:/system/dept/list.do";
	}
}
